/* 
    浅拷贝 仅仅是复制了引用， 彼此之间的操作会互相影响
*/

function clone1(target) {
    // 类型判断 {} [] null
    if (typeof target === "object" && target !== null) {
        // 判断target是否为数组
        if (Array.isArray(target)) {
            return [...target];
        } else {
            return {
                ...target
            };
        }
    } else {
        return target;
    }
}

function clone2(target) {
    //判断
    if (typeof target === "object" && target !== null) {
        // 创建一个容器
        const result = Array.isArray(target) ? [] : {};
        // 遍历target 可能是数组，也可能是对象 使用for...in循环
        for (let key in target) {
            // 判断当前对象是否包含该属性
            if (target.hasOwnProperty(key)) {
                // 将属性设置到result结果数据中
                result[key] = target[key];
            }
        }
        return result;
    } else {
        return target;
    }
}